package com.acmen.easyapi.generator;

import com.acmen.easyapi.annotation.Param;
import org.springframework.stereotype.Component;

import java.lang.reflect.Field;
import java.util.Random;

/**
 * 年龄数据生成器
 *
 * @author acmen
 * @date 2022-04-06
 */
@Component
public class AgeDataGenerator implements DataGenerator {

    /**
     * 判断是否匹配
     *
     * @param field      字段
     * @param param      参数
     * @return           匹配返回true，否则返回false
     */
    @Override
    public boolean matches(Field field, Param param) {
        if (field.getName().equalsIgnoreCase("age") || param.label().endsWith("年龄")) {
            // 如果字段名与"age"相同，或者参数标签以"年龄"结尾
            return true;
        }
        // 返回false
        return false;

    }

    /**
     * 生成数据
     *
     * @param field      字段
     * @param param      参数
     * @return           生成的数据
     */
    @Override
    public Object generate(Field field, Param param) {
        Random random = new Random();
        // 创建一个随机数生成器对象

        return random.nextInt(120) + 1;
        // 生成一个1到120之间的随机整数并返回

    }

    /**
     * 获取数据生成说明
     *
     * @return  数据生成说明
     */
    @Override
    public String getNote() {
        String note = "年龄：";
        note += "当字段为age或者@ReqParam.name以'年龄结尾时，随机生成一个大于0小的120的数字。";
        return note;
    }
}
